There is a general desire to improve the performance of data processors. Multi-processor and multi threaded processors have been developed to provide an increase in processor performance. Speculative mechanisms have also been introduced into these systems to improve processing speeds. These mechanisms try to predict steps that may need to be performed by the main thread of the process so that these steps can be performed in advance. The results of these operations are then ready when/if they are required by the main thread and processing speeds can thereby be increased. With the advances that have been made in this field, in particular, in caches, branch predictors, prefetchers and multiple-issue policies, the sensible cost benefit and complexity limits for improving performance of these processors using such hardware mechanisms are now approaching.
An alternative way of improving the performance of a processor's speculation is to use software to analyse the performance of a processor and from this analysis works out how the speculation could be improved. To take one example, large programs are known to exhibit phases of execution during which different prediction and prefetch strategies make significant differences to performance. Currently, improving the performance of the processor by exploiting such phases using hardware structures has seen very limited success. Academic research has looked at analysing the program using software and then modifying threads, adding speculation and controlling resources within a thread using software control. A summary of some of these techniques is given in http://ww.cs.ucsd.edu/jbrown/research-exam/talk-print.pdf.
These analyses may result in the execution of a program being changed to improve its performance. Thus, a processing system which is now a combination of hardware and software is provided. One drawback of this is that before a hardware processor is shipped, it is extensively tested to ensure that it operates correctly. Adding software to the processing system means that the previous validation of the hardware system is no longer necessarily correct as the added software is not an integral part of the architecture and thus, one can no longer be sure that the system will always function correctly.
Systems are also known that have self tuning mechanisms built into them, so that they can monitor and then improve their speculation mechanisms. Locating such mechanisms on the processor itself increases the area and power consumption of the processor. One example of such a system is the Alpha 21264 Tournament Predictor, which selects between branch predictions based on local and global histories using a “chooser” that is updated to remember the predictor that was right more often for a given branch see “The Alpha 21264 Microprocessor Architecture” R. E. Kessler, E. J. McLellan 1, and D. A. Webb 1998 IEEE International Conference on Computer Design (ICCD'98).
In the unrelated area of fault diagnosis “The Role of A Maintenance Processor for a general-Purpose Computer System” by Liu, IEEE Transactions on Computers Vol C-33, No. 6 Jun. 1984 discloses a system where one computer performs diagnostic tests on another computer to try to detect and isolate faults.
It would be desirable to be able to improve the performance of a processor without unduly increasing its size and power consumption, and while retaining its validation.